package com.gitee.wsl.common.ui.theme.palette.colorspace.ansi

/**
 * ANSI 颜色包装类
 *
 * @author TomXin
 * @since 5.8.6
 */
//class AnsiColorWrapper(
//    code: Int,
//    bitDepth: AnsiColors.BitDepth?
//) {
//    private val code: Int
//
//    private val bitDepth: AnsiColors.BitDepth?
//
//    /**
//     * 创建指定位深度的 `AnsiColorWrapper` 实例
//     *
//     * @param code     颜色编码，位深度为4bit时，code取值范围[30~37]，[90~97]。位深度为8bit时，code取值范围[0~255]
//     * @param bitDepth 位深度
//     */
//    init {
//        if (bitDepth === AnsiColors.BitDepth.FOUR) {
//            Assert.isTrue(
//                (30 <= code && code <= 37) || (90 <= code && code <= 97),
//                "The value of 4 bit color only supported [30~37],[90~97]."
//            )
//        }
//        Assert.isTrue((0 <= code && code <= 255), "The value of 8 bit color only supported [0~255].")
//        this.code = code
//        this.bitDepth = bitDepth
//    }
//
//    /**
//     * 转换为 [AnsiElement] 实例
//     *
//     * @param foreOrBack 区分前景还是背景
//     * @return [AnsiElement] 实例
//     */
//    fun toAnsiElement(foreOrBack: ForeOrBack?): AnsiElement {
//        if (bitDepth === AnsiColors.BitDepth.FOUR) {
//            if (foreOrBack == ForeOrBack.FORE) {
//                for (item in AnsiColor.values()) {
//                    if (item.code == this.code) {
//                        return item
//                    }
//                }
//                throw IllegalArgumentException(StrUtil.format("No matched AnsiColor instance,code={}", this.code))
//            }
//            for (item in AnsiBackground.values()) {
//                if (item.code == this.code + 10) {
//                    return item
//                }
//            }
//            throw IllegalArgumentException(StrUtil.format("No matched AnsiBackground instance,code={}", this.code))
//        }
//        if (foreOrBack == ForeOrBack.FORE) {
//            return Ansi8BitColor.foreground(this.code)
//        }
//        return Ansi8BitColor.background(this.code)
//    }
//
//    @Override
//    fun equals(o: Object?): Boolean {
//        if (this === o) {
//            return true
//        }
//        if (o == null || getClass() !== o.getClass()) {
//            return false
//        }
//        val that = o as AnsiColorWrapper
//        return this.code == that.code && this.bitDepth === that.bitDepth
//    }
//
//    @Override
//    fun hashCode(): Int {
//        return Objects.hash(this.code, this.bitDepth)
//    }
//}
